//
//class A {
//};
//
//class B {
//public:
//	B() 
//	: m_a(new A()){
//	}
//
//	virtual ~B() {
//		delete m_a;
//	}
//
//	operator A* const () const {
//		return m_a;
//	}
//
//	operator const A& () const {
//		return *m_a;
//	}
//
//private:
//	A* m_a;
//};
//
//void main() {
//	B b;
//
//	A* a1 = b;
//	A* a2 = (A*)b;
//
//	const A& a3 = b;
//}